home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic 4 Database How-To / Visual Basic 4 Database - How-to (The Waite Group)(1995).iso / permits.fr_ / permits.fr
Text File  |  1995-07-06  |  17KB  |  499 lines

  1. VERSION 4.00
  2. Begin VB.Form Form1 
  3.    BackColor       =   &H00C0C0C0&
  4.    Caption         =   "Permitter"
  5.    ClientHeight    =   4350
  6.    ClientLeft      =   690
  7.    ClientTop       =   1875
  8.    ClientWidth     =   6750
  9.    BeginProperty Font 
  10.       name            =   "MS Sans Serif"
  11.       charset         =   0
  12.       weight          =   700
  13.       size            =   8.25
  14.       underline       =   0   'False
  15.       italic          =   0   'False
  16.       strikethrough   =   0   'False
  17.    EndProperty
  18.    Height          =   4755
  19.    Left            =   630
  20.    LinkTopic       =   "Form1"
  21.    ScaleHeight     =   4350
  22.    ScaleWidth      =   6750
  23.    Top             =   1530
  24.    Width           =   6870
  25.    Begin VB.CommandButton cmdClose 
  26.       Caption         =   "&Close"
  27.       Height          =   495
  28.       Left            =   3780
  29.       TabIndex        =   12
  30.       Top             =   3540
  31.       Width           =   1755
  32.    End
  33.    Begin VB.CommandButton cmdSave 
  34.       Caption         =   "S&ave Permissions"
  35.       Height          =   555
  36.       Left            =   1260
  37.       TabIndex        =   11
  38.       Top             =   3540
  39.       Width           =   1755
  40.    End
  41.    Begin VB.CheckBox chkPermission 
  42.       BackColor       =   &H00C0C0C0&
  43.       Caption         =   "&Delete Data"
  44.       Enabled         =   0   'False
  45.       Height          =   255
  46.       Index           =   6
  47.       Left            =   3720
  48.       TabIndex        =   10
  49.       Top             =   2940
  50.       Width           =   1875
  51.    End
  52.    Begin VB.CheckBox chkPermission 
  53.       BackColor       =   &H00C0C0C0&
  54.       Caption         =   "&Insert Data"
  55.       Enabled         =   0   'False
  56.       Height          =   255
  57.       Index           =   5
  58.       Left            =   3720
  59.       TabIndex        =   9
  60.       Top             =   2640
  61.       Width           =   1875
  62.    End
  63.    Begin VB.CheckBox chkPermission 
  64.       BackColor       =   &H00C0C0C0&
  65.       Caption         =   "Upda&te Data"
  66.       Enabled         =   0   'False
  67.       Height          =   255
  68.       Index           =   4
  69.       Left            =   3720
  70.       TabIndex        =   8
  71.       Top             =   2340
  72.       Width           =   1875
  73.    End
  74.    Begin VB.CheckBox chkPermission 
  75.       BackColor       =   &H00C0C0C0&
  76.       Caption         =   "R&ead Data"
  77.       Enabled         =   0   'False
  78.       Height          =   255
  79.       Index           =   3
  80.       Left            =   3720
  81.       TabIndex        =   7
  82.       Top             =   2040
  83.       Width           =   1875
  84.    End
  85.    Begin VB.CheckBox chkPermission 
  86.       BackColor       =   &H00C0C0C0&
  87.       Caption         =   "Admini&ster"
  88.       Enabled         =   0   'False
  89.       Height          =   255
  90.       Index           =   2
  91.       Left            =   960
  92.       TabIndex        =   6
  93.       Top             =   2940
  94.       Width           =   1875
  95.    End
  96.    Begin VB.CheckBox chkPermission 
  97.       BackColor       =   &H00C0C0C0&
  98.       Caption         =   "&Modify Design"
  99.       Enabled         =   0   'False
  100.       Height          =   255
  101.       Index           =   1
  102.       Left            =   960
  103.       TabIndex        =   5
  104.       Top             =   2640
  105.       Width           =   1875
  106.    End
  107.    Begin VB.CheckBox chkPermission 
  108.       BackColor       =   &H00C0C0C0&
  109.       Caption         =   "&Read Design"
  110.       Enabled         =   0   'False
  111.       Height          =   255
  112.       Index           =   0
  113.       Left            =   960
  114.       TabIndex        =   4
  115.       Top             =   2340
  116.       Width           =   1875
  117.    End
  118.    Begin VB.ListBox lstTables 
  119.       Height          =   1395
  120.       Left            =   3660
  121.       TabIndex        =   1
  122.       Top             =   360
  123.       Width           =   2535
  124.    End
  125.    Begin VB.ListBox lstUsers 
  126.       Height          =   1395
  127.       Left            =   360
  128.       Sorted          =   -1  'True
  129.       TabIndex        =   0
  130.       Top             =   360
  131.       Width           =   2535
  132.    End
  133.    Begin VB.Label lblPermissions 
  134.       BackColor       =   &H00C0C0C0&
  135.       Height          =   255
  136.       Left            =   1620
  137.       TabIndex        =   14
  138.       Top             =   1920
  139.       Width           =   1215
  140.    End
  141.    Begin VB.Label Label3 
  142.       AutoSize        =   -1  'True
  143.       BackColor       =   &H00C0C0C0&
  144.       Caption         =   "Permissions:"
  145.       Height          =   195
  146.       Left            =   360
  147.       TabIndex        =   13
  148.       Top             =   1920
  149.       Width           =   1065
  150.    End
  151.    Begin VB.Label Label2 
  152.       AutoSize        =   -1  'True
  153.       BackColor       =   &H00C0C0C0&
  154.       Caption         =   "Tables and queries:"
  155.       Height          =   195
  156.       Left            =   3660
  157.       TabIndex        =   3
  158.       Top             =   120
  159.       Width           =   1695
  160.    End
  161.    Begin VB.Label Label1 
  162.       AutoSize        =   -1  'True
  163.       BackColor       =   &H00C0C0C0&
  164.       Caption         =   "Users:"
  165.       Height          =   195
  166.       Left            =   360
  167.       TabIndex        =   2
  168.       Top             =   120
  169.       Width           =   555
  170.    End
  171. End
  172. Attribute VB_Name = "Form1"
  173. Attribute VB_Creatable = False
  174. Attribute VB_Exposed = False
  175. Option Explicit
  176.  
  177. Const P_READDESIGN = 0
  178. Const P_MODIFYDESIGN = 1
  179. Const P_ADMINISTER = 2
  180. Const P_READDATA = 3
  181. Const P_UPDATEDATA = 4
  182. Const P_INSERTDATA = 5
  183. Const P_DELETEDATA = 6
  184.  
  185. Const DBSEC_READDESIGN = 4
  186. Const DBSEC_MODIFYDESIGN = 65756
  187. Const DBSEC_ADMINISTER = 852478
  188. Const DBSEC_READDATA = 20
  189. Const DBSEC_UPDATEDATA = 84
  190. Const DBSEC_INSERTDATA = 52
  191. Const DBSEC_DELETEDATA = 148
  192. Const DBSEC_MODIFYDESIGN_INSERTDATA = 65788
  193. Const DBSEC_UPDATEINSERTDATA = 116
  194. Const DBSEC_UPDATEDELETEDATA = 212
  195. Const DBSEC_INSERTDELETEDATA = 180
  196. Const DBSEC_UPDATEINSERTDELETEDATA = 244
  197. Const DBSEC_NOPERMISSIONS = 0
  198. Const DBSEC_READSEC = 131072
  199.  
  200. Const CHK_CHECKED = 1
  201. Const CHK_UNCHECKED = 0
  202.  
  203. Private db As DATABASE
  204. #If Win32 Then
  205.     Private Declare Function GetWindowsDirectory Lib "Kernel32" _
  206.         Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, _
  207.         ByVal nSize As Long) As Long
  208. #Else
  209.     Private Declare Function GetWindowsDirectory Lib "Kernel" _
  210.         (ByVal lpBuffer As String, _
  211.         ByVal nSize As Integer) As Integer
  212. #End If
  213.  
  214.  
  215. Private Sub Form_Load()
  216.     Dim myUser As String, myPass As String
  217.     Dim i As Integer
  218.     Dim winDir As String * 128
  219.     Dim dirLen As Integer
  220.     Dim dbName As String
  221.     
  222.     On Error GoTo LoadError
  223.     
  224.     ' Get the Windows directory and set the INI path.
  225.     dirLen = GetWindowsDirectory(winDir, 128)
  226.     If dirLen = 0 Then Error 32767
  227.     DBEngine.IniPath = Left$(winDir, dirLen) & "\VBDBHT.INI"
  228.     
  229.     ' Set the user and passwords for initial login.
  230.     myUser = "Admin"
  231.     myPass = "theboss"
  232.     DBEngine.DefaultUser = myUser
  233.     DBEngine.DefaultPassword = myPass
  234.     
  235.     ' Get the database name and open the database.
  236.     dbName = DataPath() & "\CHAPTER.09\ORDERS.MDB" ' DataPath() is in READINI.BAS
  237.     Set db = DBEngine.Workspaces(0).OpenDatabase(dbName)
  238.  
  239.     ' Fill the list boxes.
  240.     FillUserList
  241.     FillTableList
  242. Exit Sub
  243.  
  244. LoadError:
  245.     MsgBox Err.Description, vbCritical
  246. End
  247.  
  248. End Sub
  249.  
  250.  
  251. Sub FillUserList()
  252.     Dim usr As User
  253.     
  254.     For Each usr In DBEngine.Workspaces(0).Users
  255.         If UCase$(usr.Name) <> "CREATOR" And UCase$(usr.Name) <> "ENGINE" And UCase$(usr.Name) <> "ADMIN" Then
  256.             lstUsers.AddItem usr.Name
  257.         End If
  258.     Next
  259. End Sub
  260.  
  261. Sub FillTableList()
  262.     Dim doc As Document
  263.     
  264.     For Each doc In db.Containers("Tables").Documents
  265.         If Left$(doc.Name, 4) <> "MSys" Then lstTables.AddItem doc.Name
  266.     Next
  267.  
  268. End Sub
  269.  
  270. Private Sub lstUsers_Click()
  271.     Dim i As Integer
  272.     
  273.     If lstTables.ListIndex > -1 Then
  274.         If ReadPermissions() = False Then
  275.             lstUsers.ListIndex = -1
  276.             For i = 0 To 6
  277.                 chkPermission(i).VALUE = CHK_UNCHECKED
  278.                 chkPermission(i).Enabled = False
  279.             Next i
  280.         End If
  281.     End If
  282. End Sub
  283.  
  284. Private Sub lstTables_Click()
  285.     Dim i As Integer
  286.     
  287.     If lstUsers.ListIndex > -1 Then
  288.         If ReadPermissions() = False Then
  289.             lstTables.ListIndex = -1
  290.             For i = 0 To 6
  291.                 chkPermission(i).VALUE = CHK_UNCHECKED
  292.                 chkPermission(i).Enabled = False
  293.             Next i
  294.         End If
  295.     End If
  296. End Sub
  297.  
  298. Function ReadPermissions() As Boolean
  299.     Dim pass As String
  300.     Dim i As Integer
  301.     Dim permissionCode As Long
  302.     Dim doc As Document
  303.     
  304.     On Error GoTo ReadPermissionsError
  305.     
  306.     Set doc = db.Containers("Tables").Documents(lstTables.TEXT)
  307.     doc.UserName = lstUsers.TEXT
  308.     
  309.     For i = 0 To 6
  310.         chkPermission(i).Enabled = True
  311.         chkPermission(i).VALUE = CHK_UNCHECKED
  312.     Next i
  313.     lblPermissions.Caption = doc.Permissions
  314.     permissionCode = doc.Permissions
  315.     Select Case permissionCode
  316.         Case DBSEC_ADMINISTER
  317.             For i = 0 To 6
  318.                 chkPermission(i).VALUE = CHK_CHECKED
  319.             Next i
  320.         Case DBSEC_MODIFYDESIGN
  321.             chkPermission(P_MODIFYDESIGN).VALUE = CHK_CHECKED
  322.             chkPermission(P_READDESIGN).VALUE = CHK_CHECKED
  323.             chkPermission(P_READDATA).VALUE = CHK_CHECKED
  324.             chkPermission(P_UPDATEDATA).VALUE = CHK_CHECKED
  325.             chkPermission(P_DELETEDATA).VALUE = CHK_CHECKED
  326.         Case DBSEC_UPDATEDATA
  327.             chkPermission(P_UPDATEDATA).VALUE = CHK_CHECKED
  328.             chkPermission(P_READDESIGN).VALUE = CHK_CHECKED
  329.             chkPermission(P_READDATA).VALUE = CHK_CHECKED
  330.         Case DBSEC_DELETEDATA
  331.             chkPermission(P_DELETEDATA).VALUE = CHK_CHECKED
  332.             chkPermission(P_READDESIGN).VALUE = CHK_CHECKED
  333.             chkPermission(P_READDATA).VALUE = CHK_CHECKED
  334.         Case DBSEC_INSERTDATA
  335.             chkPermission(P_INSERTDATA).VALUE = CHK_CHECKED
  336.             chkPermission(P_READDESIGN).VALUE = CHK_CHECKED
  337.             chkPermission(P_READDATA).VALUE = CHK_CHECKED
  338.         Case DBSEC_READDATA
  339.             chkPermission(P_READDATA).VALUE = CHK_CHECKED
  340.             chkPermission(P_READDESIGN).VALUE = CHK_CHECKED
  341.         Case DBSEC_READDESIGN
  342.             chkPermission(P_READDESIGN).VALUE = CHK_CHECKED
  343.         Case DBSEC_MODIFYDESIGN_INSERTDATA
  344.             chkPermission(P_MODIFYDESIGN).VALUE = CHK_CHECKED
  345.             chkPermission(P_READDESIGN).VALUE = CHK_CHECKED
  346.             chkPermission(P_READDATA).VALUE = CHK_CHECKED
  347.             chkPermission(P_UPDATEDATA).VALUE = CHK_CHECKED
  348.             chkPermission(P_INSERTDATA).VALUE = CHK_CHECKED
  349.             chkPermission(P_DELETEDATA).VALUE = CHK_CHECKED
  350.         Case DBSEC_UPDATEINSERTDATA
  351.             chkPermission(P_UPDATEDATA).VALUE = CHK_CHECKED
  352.             chkPermission(P_INSERTDATA).VALUE = CHK_CHECKED
  353.             chkPermission(P_READDESIGN).VALUE = CHK_CHECKED
  354.             chkPermission(P_READDATA).VALUE = CHK_CHECKED
  355.         Case DBSEC_UPDATEDELETEDATA
  356.             chkPermission(P_UPDATEDATA).VALUE = CHK_CHECKED
  357.             chkPermission(P_READDESIGN).VALUE = CHK_CHECKED
  358.             chkPermission(P_READDATA).VALUE = CHK_CHECKED
  359.             chkPermission(P_DELETEDATA).VALUE = CHK_CHECKED
  360.         Case DBSEC_INSERTDELETEDATA
  361.             chkPermission(P_DELETEDATA).VALUE = CHK_CHECKED
  362.             chkPermission(P_READDESIGN).VALUE = CHK_CHECKED
  363.             chkPermission(P_READDATA).VALUE = CHK_CHECKED
  364.             chkPermission(P_INSERTDATA).VALUE = CHK_CHECKED
  365.         Case DBSEC_UPDATEINSERTDELETEDATA
  366.             chkPermission(P_UPDATEDATA).VALUE = CHK_CHECKED
  367.             chkPermission(P_READDESIGN).VALUE = CHK_CHECKED
  368.             chkPermission(P_READDATA).VALUE = CHK_CHECKED
  369.             chkPermission(P_DELETEDATA).VALUE = CHK_CHECKED
  370.             chkPermission(P_INSERTDATA).VALUE = CHK_CHECKED
  371.     End Select
  372.     ReadPermissions = True
  373.     
  374. Exit Function
  375. ReadPermissionsError:
  376.     MsgBox Err.Description & " (" & Err.Number & ")", vbExclamation
  377.     ReadPermissions = False
  378. Exit Function
  379.     
  380. End Function
  381.  
  382. Private Sub chkPermission_Click(Index As Integer)
  383.     Dim i As Integer
  384.     Select Case Index
  385.         Case P_ADMINISTER
  386.             If chkPermission(Index).VALUE = CHK_CHECKED Then
  387.                 For i = 0 To 6
  388.                     chkPermission(i).VALUE = CHK_CHECKED
  389.                 Next i
  390.             End If
  391.         Case P_READDESIGN
  392.             If chkPermission(Index).VALUE = CHK_UNCHECKED Then
  393.                 For i = 0 To 6
  394.                     chkPermission(i).VALUE = CHK_UNCHECKED
  395.                 Next i
  396.             End If
  397.         Case P_READDATA
  398.             If chkPermission(Index).VALUE = CHK_CHECKED Then
  399.                 chkPermission(P_READDESIGN).VALUE = CHK_CHECKED
  400.             Else
  401.                 chkPermission(P_MODIFYDESIGN).VALUE = CHK_UNCHECKED
  402.                 chkPermission(P_UPDATEDATA).VALUE = CHK_UNCHECKED
  403.                 chkPermission(P_DELETEDATA).VALUE = CHK_UNCHECKED
  404.                 chkPermission(P_INSERTDATA).VALUE = CHK_UNCHECKED
  405.                 chkPermission(P_ADMINISTER).VALUE = CHK_UNCHECKED
  406.             End If
  407.         Case P_MODIFYDESIGN
  408.             If chkPermission(Index).VALUE = CHK_CHECKED Then
  409.                 chkPermission(P_READDESIGN).VALUE = CHK_CHECKED
  410.                 chkPermission(P_READDATA).VALUE = CHK_CHECKED
  411.                 chkPermission(P_UPDATEDATA).VALUE = CHK_CHECKED
  412.                 chkPermission(P_INSERTDATA).VALUE = CHK_CHECKED
  413.             Else
  414.                 chkPermission(P_ADMINISTER).VALUE = CHK_UNCHECKED
  415.             End If
  416.         Case P_UPDATEDATA
  417.             If chkPermission(Index).VALUE = CHK_CHECKED Then
  418.                 chkPermission(P_READDESIGN).VALUE = CHK_CHECKED
  419.                 chkPermission(P_READDATA).VALUE = CHK_CHECKED
  420.             Else
  421.                 chkPermission(P_ADMINISTER).VALUE = CHK_UNCHECKED
  422.                 chkPermission(P_MODIFYDESIGN).VALUE = CHK_UNCHECKED
  423.             End If
  424.         Case P_DELETEDATA
  425.             If chkPermission(Index).VALUE = CHK_CHECKED Then
  426.                 chkPermission(P_READDESIGN).VALUE = CHK_CHECKED
  427.                 chkPermission(P_READDATA).VALUE = CHK_CHECKED
  428.             Else
  429.                 chkPermission(P_ADMINISTER).VALUE = CHK_UNCHECKED
  430.                 chkPermission(P_MODIFYDESIGN).VALUE = CHK_UNCHECKED
  431.             End If
  432.         Case P_INSERTDATA
  433.             If chkPermission(Index).VALUE = CHK_CHECKED Then
  434.                 chkPermission(P_READDESIGN).VALUE = CHK_CHECKED
  435.                 chkPermission(P_READDATA).VALUE = CHK_CHECKED
  436.             Else
  437.                 chkPermission(P_ADMINISTER).VALUE = CHK_UNCHECKED
  438.             End If
  439.     End Select
  440.         
  441.  
  442. End Sub
  443.  
  444.  
  445. Private Sub cmdSave_Click()
  446.     Dim doc As Document
  447.     Dim permissionCode As Long
  448.     
  449.     On Error GoTo SaveError
  450.     
  451.     Set doc = db.Containers("Tables").Documents(lstTables.TEXT)
  452.     doc.UserName = lstUsers.TEXT
  453.     If chkPermission(P_ADMINISTER) = CHK_CHECKED Then
  454.         permissionCode = DBSEC_ADMINISTER
  455.     ElseIf chkPermission(P_MODIFYDESIGN) = CHK_CHECKED Then
  456.         If chkPermission(P_INSERTDATA) = CHK_CHECKED Then
  457.             permissionCode = DBSEC_MODIFYDESIGN_INSERTDATA
  458.         Else
  459.             permissionCode = DBSEC_MODIFYDESIGN
  460.         End If
  461.     ElseIf chkPermission(P_UPDATEDATA) = CHK_CHECKED Then
  462.         If chkPermission(P_INSERTDATA) = CHK_CHECKED Then
  463.             If chkPermission(P_DELETEDATA) = CHK_CHECKED Then
  464.                 permissionCode = DBSEC_UPDATEINSERTDELETEDATA
  465.             Else
  466.                 permissionCode = DBSEC_UPDATEINSERTDATA
  467.             End If
  468.         Else
  469.             permissionCode = DBSEC_UPDATEDATA
  470.         End If
  471.     ElseIf chkPermission(P_INSERTDATA) = CHK_CHECKED Then
  472.         If chkPermission(P_DELETEDATA) = CHK_CHECKED Then
  473.             permissionCode = DBSEC_INSERTDELETEDATA
  474.         Else
  475.             permissionCode = DBSEC_INSERTDATA
  476.         End If
  477.     ElseIf chkPermission(P_DELETEDATA) = CHK_CHECKED Then
  478.         permissionCode = DBSEC_DELETEDATA
  479.     ElseIf chkPermission(P_READDATA) = CHK_CHECKED Then
  480.         permissionCode = DBSEC_READDATA
  481.     ElseIf chkPermission(P_READDESIGN) = CHK_CHECKED Then
  482.         permissionCode = DBSEC_READDESIGN
  483.     Else
  484.         permissionCode = DBSEC_NOPERMISSIONS
  485.     End If
  486.     If UCase$(doc.UserName) = "ADMIN" Then permissionCode = permissionCode + DBSEC_READSEC
  487.     doc.Permissions = permissionCode
  488.     lblPermissions.Caption = doc.Permissions
  489. Exit Sub
  490. SaveError:
  491.     MsgBox Err.Description & " (" & Err.Number & ")"
  492. Exit Sub
  493. End Sub
  494.  
  495. Private Sub cmdClose_Click()
  496.     End
  497. End Sub
  498.  
  499.